package avb;

import java.util.concurrent.Semaphore;

public class MemoriaCondivisa1Sem extends MemoriaCondivisa {
	private int numLettori = 0;
	private Semaphore mutex = new Semaphore(1);
	private Semaphore scrittura = new Semaphore(1);

	public void inizioLettura() throws InterruptedException {
		mutex.acquire();
		if (numLettori == 0) {
			scrittura.acquire();
		}
		numLettori++;
		mutex.release();
	}

	public void fineLettura() throws InterruptedException {
		mutex.acquire();
		numLettori--;
		if (numLettori == 0) {
			scrittura.release();
		}
		mutex.release();
	}

	public void inizioScrittura() throws InterruptedException {
		scrittura.acquire();
	}

	public void fineScrittura() {
		scrittura.release();
	}
	
	
}